home *** CD-ROM | disk | FTP | other *** search
/ 3D Games (Spidla) / 3dhry1.iso / mAz Lite 1.0 / userctrl.wdl < prev    next >
Encoding:
Text File  |  2003-03-17  |  43.1 KB  |  2,219 lines

  1. //KEY REMAPPING FOR TEMPLATE SCRIPTS
  2. //Keith Blount AKA Ambit 2001
  3.  
  4. //This is a very easy script that allows you to redefine all the default keys of games made with GameStudio
  5. //It will automatically remember the new mapping when you close and restart the game (saving the info to contr15.SAV)...
  6.  
  7. //Just include this after all the template WDLs in your main game script and hit F12
  8. //to change the key mapping - easy!
  9.  
  10. //To load the custom controls each time you start the game, just place:
  11. //init_controls();
  12. //somewhere near the beginning of main()...
  13.  
  14. //NB. The basic idea of using DEFINE to change the keys came from Keith MiddleBrook AKA Keebo's redefinition script, but
  15. //this script takes advantage of the new scancode possibilities of the A5 engine to make it very easy to redefine keys.
  16.  
  17.  
  18. string* new_key_str;  //pointer string
  19.  
  20. //return scancodes as variable:
  21.  
  22. function define_key()
  23. {
  24.  if(key_a==1)
  25.   {
  26.    new_key_str="A";
  27.    return(30);
  28.   }
  29.  if(key_b==1)
  30.   {
  31.    new_key_str="B";
  32.    return(48);
  33.   }
  34.  if(key_c==1)
  35.   {
  36.    new_key_str="C";
  37.    return(46);
  38.   }
  39.  if(key_d==1)
  40.   {
  41.    new_key_str="D";
  42.    return(32);
  43.   }
  44.  if(key_e==1)
  45.   {
  46.    new_key_str="E";
  47.    return(18);
  48.   }
  49.  if(key_f==1)
  50.   {
  51.    new_key_str="F";
  52.    return(33);
  53.   }
  54.  if(key_g==1)
  55.   {
  56.    new_key_str="G";
  57.    return(34);
  58.   }
  59.  if(key_h==1)
  60.   {
  61.    new_key_str="H";
  62.    return(35);
  63.   }
  64.  if(key_i==1)
  65.   {
  66.    new_key_str="I";
  67.    return(23);
  68.   }
  69.  if(key_j==1)
  70.   {
  71.    new_key_str="J";
  72.    return(36);
  73.   }
  74.  if(key_k==1)
  75.   {
  76.    new_key_str="K";
  77.    return(37);
  78.   }
  79.  if(key_l==1)
  80.   {
  81.    new_key_str="L";
  82.    return(38);
  83.   }
  84.  if(key_m==1)
  85.   {
  86.    new_key_str="M";
  87.    return(50);
  88.   }
  89.  if(key_n==1)
  90.   {
  91.    new_key_str="N";
  92.    return(49);
  93.   }
  94.  if(key_o==1)
  95.   {
  96.    new_key_str="O";
  97.    return(24);
  98.   }
  99.  if(key_p==1)
  100.   {
  101.    new_key_str="P";
  102.    return(25);
  103.   }
  104.  if(key_q==1)
  105.   {
  106.    new_key_str="Q";
  107.    return(16);
  108.   }
  109.  if(key_r==1)
  110.   {
  111.    new_key_str="R";
  112.    return(19);
  113.   }
  114.  if(key_s==1)
  115.   {
  116.    new_key_str="S";
  117.    return(31);
  118.   }
  119.  if(key_t==1)
  120.   {
  121.    new_key_str="T";
  122.    return(20);
  123.   }
  124.  if(key_u==1)
  125.   {
  126.    new_key_str="U";
  127.    return(22);
  128.   }
  129.  if(key_v==1)
  130.   {
  131.    new_key_str="V";
  132.    return(47);
  133.   }
  134.  if(key_w==1)
  135.   {
  136.    new_key_str="W";
  137.    return(17);
  138.   }
  139.  if(key_x==1)
  140.   {
  141.    new_key_str="X";
  142.    return(45);
  143.   }
  144.  if(key_y==1)
  145.   {
  146.    new_key_str="Y";
  147.    return(21);
  148.   }
  149.  if(key_z==1)
  150.   {
  151.    new_key_str="Z";
  152.    return(44);
  153.   }
  154.  if(key_cuu==1)
  155.   {
  156.    new_key_str="UP";
  157.    return(72);
  158.   }
  159.  if(key_cud==1)
  160.   {
  161.    new_key_str="DOWN";
  162.    return(80);
  163.   }
  164.  if(key_cul==1)
  165.   {
  166.    new_key_str="LEFT";
  167.    return(75);
  168.   }
  169.  if(key_cur==1)
  170.   {
  171.    new_key_str="RIGHT";
  172.    return(77);
  173.   }
  174.  if(key_0==1)
  175.   {
  176.    new_key_str="0";
  177.    return(11);
  178.   }
  179.  if(key_1==1)
  180.   {
  181.    new_key_str="1";
  182.    return(2);
  183.   }
  184.  if(key_2==1)
  185.   {
  186.    new_key_str="2";
  187.    return(3);
  188.   }
  189.  if(key_3==1)
  190.   {
  191.    new_key_str="3";
  192.    return(4);
  193.   }
  194.  if(key_4==1)
  195.   {
  196.    new_key_str="4";
  197.    return(5);
  198.   }
  199.  if(key_5==1)
  200.   {
  201.    new_key_str="5";
  202.    return(6);
  203.   }
  204.  if(key_6==1)
  205.   {
  206.    new_key_str="6";
  207.    return(7);
  208.   }
  209.  if(key_7==1)
  210.   {
  211.    new_key_str="7";
  212.    return(8);
  213.   }
  214.  if(key_8==1)
  215.   {
  216.    new_key_str="8";
  217.    return(9);
  218.   }
  219.  if(key_9==1)
  220.   {
  221.    new_key_str="9";
  222.    return(10);
  223.   }
  224.  if(key_esc==1)
  225.   {
  226.    new_key_str="ESCAPE";
  227.    return(1);
  228.   }
  229.  if(key_f1==1)
  230.   {
  231.    new_key_str="F1";
  232.    return(59);
  233.   }
  234.  if(key_f2==1)
  235.   {
  236.    new_key_str="F2";
  237.    return(60);
  238.   }
  239.  if(key_f3==1)
  240.   {
  241.    new_key_str="F3";
  242.    return(61);
  243.   }
  244.  if(key_f4==1)
  245.   {
  246.    new_key_str="F4";
  247.    return(62);
  248.   }
  249.  if(key_f5==1)
  250.   {
  251.    new_key_str="F5";
  252.    return(63);
  253.   }
  254.  if(key_f6==1)
  255.   {
  256.    new_key_str="F6";
  257.    return(64);
  258.   }
  259.  if(key_f7==1)
  260.   {
  261.    new_key_str="F7";
  262.    return(65);
  263.   }
  264.  if(key_f8==1)
  265.   {
  266.    new_key_str="F8";
  267.    return(66);
  268.   }
  269.  if(key_f9==1)
  270.   {
  271.    new_key_str="F9";
  272.    return(67);
  273.   }
  274.  if(key_f10==1)
  275.   {
  276.    new_key_str="F10";
  277.    return(68);
  278.   }
  279.  if(key_f11==1)
  280.   {
  281.    new_key_str="F11";
  282.    return(87);
  283.   }
  284.  if(key_f12==1)
  285.   {
  286.    new_key_str="F12";
  287.    return(88);
  288.   }
  289.  if(key_enter==1)
  290.   {
  291.    new_key_str="ENTER";
  292.    return(28);
  293.   }
  294.  if(key_tab==1)
  295.   {
  296.    new_key_str="TAB";
  297.    return(15);
  298.   }
  299.  if(key_ctrl==1)
  300.   {
  301.    new_key_str="CTRL";
  302.    return(29);
  303.   }
  304.  if(key_alt==1)
  305.   {
  306.    new_key_str="ALT";
  307.    return(56);
  308.   }
  309.  if(key_shiftl==1)
  310.   {
  311.    new_key_str="L SHIFT";
  312.    return(42);
  313.   }
  314.  if(key_shiftr==1)
  315.   {
  316.    new_key_str="R SHIFT";
  317.    return(54);
  318.   }
  319.  if(key_space==1)
  320.   {
  321.    new_key_str="SPACE";
  322.    return(57);
  323.   }
  324.  if(key_bksp==1)
  325.   {
  326.    new_key_str="BACKSPACE";
  327.    return(14);
  328.   }
  329.  if(key_pgup==1)
  330.   {
  331.    new_key_str="PAGE UP";
  332.    return(73);
  333.   }
  334.  if(key_pgdn==1)
  335.   {
  336.    new_key_str="PAGE DOWN";
  337.    return(81);
  338.   }
  339.  if(key_home==1)
  340.   {
  341.    new_key_str="HOME";
  342.    return(71);
  343.   }
  344.  if(key_end==1)
  345.   {
  346.    new_key_str="END";
  347.    return(79);
  348.   }
  349.  if(key_ins==1)
  350.   {
  351.    new_key_str="INSERT";
  352.    return(82);
  353.   }
  354.  if(key_del==1)
  355.   {
  356.    new_key_str="DELETE";
  357.    return(83);
  358.   }
  359.  if(key_pause==1)
  360.   {
  361.    new_key_str="PAUSE";
  362.    return(69);
  363.   }
  364.  if(key_cal==1)
  365.   {
  366.    new_key_str=",";
  367.    return(51);
  368.   }
  369.  if(key_car==1)
  370.   {
  371.    new_key_str=".";
  372.    return(52);
  373.   }
  374.  
  375.  if(key_brackl==1)
  376.   {
  377.    new_key_str="[";
  378.    return(26);
  379.   }
  380.  if(key_brackr==1)
  381.   {
  382.    new_key_str="]";
  383.    return(27);
  384.   }
  385.  if(key_semic==1)
  386.   {
  387.    new_key_str=";";
  388.    return(39);
  389.   }
  390.  if(key_apos==1)
  391.   {
  392.    new_key_str="'";
  393.    return(40);
  394.   }
  395.  if(key_slash==1)
  396.   {
  397.    new_key_str="/";
  398.    return(53);
  399.   }
  400.  
  401.  if(key_minusc==1)
  402.   {
  403.    new_key_str="-";
  404.    return(12);
  405.   }
  406.  if(key_equals==1)
  407.   {
  408.    new_key_str="=";
  409.    return(13);
  410.   }
  411.  if(key_grave==1)
  412.   {
  413.    new_key_str="`¼";
  414.    return(41);
  415.   }
  416.  
  417.  if(key_bksl==1)
  418.   {
  419.    new_key_str="\#";
  420.    return(43);
  421.   }
  422.  
  423. //no backslash key!!!
  424.  
  425.  
  426.  //JOYSTICK:
  427.  if(joy_1==1)
  428.   {
  429.    new_key_str="JOY1";
  430.    return(256);
  431.   }
  432.  if(joy_2==1)
  433.   {
  434.    new_key_str="JOY2";
  435.    return(257);
  436.   }
  437.  if(joy_3==1)
  438.   {
  439.    new_key_str="JOY3";
  440.    return(258);
  441.   }
  442.  if(joy_4==1)
  443.   {
  444.    new_key_str="JOY4";
  445.    return(259);
  446.   }
  447.  if(joy_5==1)
  448.   {
  449.    new_key_str="JOY5";
  450.    return(260);
  451.   }
  452.  if(joy_6==1)
  453.   {
  454.    new_key_str="JOY6";
  455.    return(261);
  456.   }
  457.  if(joy_7==1)
  458.   {
  459.    new_key_str="JOY7";
  460.    return(262);
  461.   }
  462.  if(joy_8==1)
  463.   {
  464.    new_key_str="JOY8";
  465.    return(263);
  466.   }
  467.  if(joy_9==1)
  468.   {
  469.    new_key_str="JOY9";
  470.    return(264);
  471.   }
  472.  if(joy_10==1)
  473.   {
  474.    new_key_str="JOY10";
  475.    return(265);
  476.   }
  477.  
  478.  //MOUSE BUTTONS:
  479.  if(mouse_left==1)
  480.   {
  481.    new_key_str="MOUSE L";
  482.    return(280);
  483.   }
  484.  if(mouse_right==1)
  485.   {
  486.    new_key_str="MOUSE R";
  487.    return(281);
  488.   }
  489.  if(mouse_middle==1)
  490.   {
  491.    new_key_str="MOUSE MID";
  492.    return(282);
  493.   }
  494.  
  495. }
  496.  
  497.  
  498. //This is used by putting eg. this at the beginning of a controls section:
  499. //define my_up_key,key_a;
  500. //key_up_scancode=29; //or whatever
  501. //in controls section:
  502. //my_up_key=get_key(key_up_scancode);
  503.  
  504. //To be placed at beginning of control section (eg. Player Intentions):
  505. function get_key(key_var)
  506. {
  507.  if(key_var==30)
  508.   {return(key_a);}
  509.  if(key_var==48)
  510.   {return(key_b);}
  511.  if(key_var==46)
  512.   {return(key_c);}
  513.  if(key_var==32)
  514.   {return(key_d);}
  515.  if(key_var==18)
  516.   {return(key_e);}
  517.  if(key_var==33)
  518.   {return(key_f);}
  519.  if(key_var==34)
  520.   {return(key_g);}
  521.  if(key_var==35)
  522.   {return(key_h);}
  523.  if(key_var==23)
  524.   {return(key_i);}
  525.  if(key_var==36)
  526.   {return(key_j);}
  527.  if(key_var==37)
  528.   {return(key_k);}
  529.  if(key_var==38)
  530.   {return(key_l);}
  531.  if(key_var==50)
  532.   {return(key_m);}
  533.  if(key_var==49)
  534.   {return(key_n);}
  535.  if(key_var==24)
  536.   {return(key_o);}
  537.  if(key_var==25)
  538.   {return(key_p);}
  539.  if(key_var==16)
  540.   {return(key_q);}
  541.  if(key_var==19)
  542.   {return(key_r);}
  543.  if(key_var==31)
  544.   {return(key_s);}
  545.  if(key_var==20)
  546.   {return(key_t);}
  547.  if(key_var==22)
  548.   {return(key_u);}
  549.  if(key_var==47)
  550.   {return(key_v);}
  551.  if(key_var==17)
  552.   {return(key_w);}
  553.  if(key_var==45)
  554.   {return(key_x);}
  555.  if(key_var==21)
  556.   {return(key_y);}
  557.  if(key_var==44)
  558.   {return(key_z);}
  559.  if(key_var==72)
  560.   {return(key_cuu);}
  561.  if(key_var==80)
  562.   {return(key_cud);}
  563.  if(key_var==75)
  564.   {return(key_cul);}
  565.  if(key_var==77)
  566.   {return(key_cur);}
  567.  if(key_var==11)
  568.   {return(key_0);}
  569.  if(key_var==2)
  570.   {return(key_1);}
  571.  if(key_var==3)
  572.   {return(key_2);}
  573.  if(key_var==4)
  574.   {return(key_3);}
  575.  if(key_var==5)
  576.   {return(key_4);}
  577.  if(key_var==6)
  578.   {return(key_5);}
  579.  if(key_var==7)
  580.   {return(key_6);}
  581.  if(key_var==8)
  582.   {return(key_7);}
  583.  if(key_var==9)
  584.   {return(key_8);}
  585.  if(key_var==10)
  586.   {return(key_9);}
  587.  if(key_var==1)
  588.   {return(key_esc);}
  589.  if(key_var==59)
  590.   {return(key_f1);}
  591.  if(key_var==60)
  592.   {return(key_f2);}
  593.  if(key_var==61)
  594.   {return(key_f3);}
  595.  if(key_var==62)
  596.   {return(key_f4);}
  597.  if(key_var==63)
  598.   {return(key_f5);}
  599.  if(key_var==64)
  600.   {return(key_f6);}
  601.  if(key_var==65)
  602.   {return(key_f7);}
  603.  if(key_var==66)
  604.   {return(key_f8);}
  605.  if(key_var==67)
  606.   {return(key_f9);}
  607.  if(key_var==68)
  608.   {return(key_f10);}
  609.  if(key_var==87)
  610.   {return(key_f11);}
  611.  if(key_var==88)
  612.   {return(key_f12);}
  613.  if(key_var==28)
  614.   {return(key_enter);}
  615.  if(key_var==15)
  616.   {return(key_tab);}
  617.  if(key_var==29)
  618.   {return(key_ctrl);}
  619.  if(key_var==56)
  620.   {return(key_alt);}
  621.  if(key_var==42)
  622.   {return(key_shiftl);}
  623.  if(key_var==54)
  624.   {return(key_shiftr);}
  625.  if(key_var==57)
  626.   {return(key_space);}
  627.  if(key_var==14)
  628.   {return(key_bksp);}
  629.  if(key_var==73)
  630.   {return(key_pgup);}
  631.  if(key_var==81)
  632.   {return(key_pgdn);}
  633.  if(key_var==71)
  634.   {return(key_home);}
  635.  if(key_var==79)
  636.   {return(key_end);}
  637.  if(key_var==82)
  638.   {return(key_ins);}
  639.  if(key_var==83)
  640.   {return(key_del);}
  641.  if(key_var==69)
  642.   {return(key_pause);}
  643.  if(key_var==51)
  644.   {return(key_cal);}
  645.  if(key_var==52)
  646.   {return(key_car);}
  647.  
  648.  if(key_var==26)
  649.   {return(key_brackl);}
  650.  if(key_var==27)
  651.   {return(key_brackr);}
  652.  if(key_var==39)
  653.   {return(key_semic);}
  654.  if(key_var==40)
  655.   {return(key_apos);}
  656.  
  657.  if(key_var==12)
  658.   {return(key_minusc);}
  659.  if(key_var==13)
  660.   {return(key_equals);}
  661.  if(key_var==53)
  662.   {return(key_slash);}
  663.  if(key_var==41)
  664.   {return(key_grave);}
  665.  if(key_var==43)
  666.   {return(key_bksl);}
  667.  
  668.  if(key_var==256)
  669.   {return(joy_1);}
  670.  if(key_var==257)
  671.   {return(joy_2);}
  672.  if(key_var==258)
  673.   {return(joy_3);}
  674.  if(key_var==259)
  675.   {return(joy_4);}
  676.  if(key_var==260)
  677.   {return(joy_5);}
  678.  if(key_var==261)
  679.   {return(joy_6);}
  680.  if(key_var==262)
  681.   {return(joy_7);}
  682.  if(key_var==263)
  683.   {return(joy_8);}
  684.  if(key_var==264)
  685.   {return(joy_9);}
  686.  if(key_var==265)
  687.   {return(joy_10);}
  688.  
  689.  if(key_var==280)
  690.   {return(mouse_left);}
  691.  if(key_var==281)
  692.   {return(mouse_right);}
  693.  if(key_var==282)
  694.   {return(mouse_middle);}
  695.  
  696. }
  697.  
  698.  
  699.  
  700.  
  701.  
  702. function get_key_string(key_var)
  703. {
  704.  if(key_var==30)
  705.   {return("A");}
  706.  if(key_var==48)
  707.   {return("B");}
  708.  if(key_var==46)
  709.   {return("C");}
  710.  if(key_var==32)
  711.   {return("D");}
  712.  if(key_var==18)
  713.   {return("E");}
  714.  if(key_var==33)
  715.   {return("F");}
  716.  if(key_var==34)
  717.   {return("G");}
  718.  if(key_var==35)
  719.   {return("H");}
  720.  if(key_var==23)
  721.   {return("I");}
  722.  if(key_var==36)
  723.   {return("J");}
  724.  if(key_var==37)
  725.   {return("K");}
  726.  if(key_var==38)
  727.   {return("L");}
  728.  if(key_var==50)
  729.   {return("M");}
  730.  if(key_var==49)
  731.   {return("N");}
  732.  if(key_var==24)
  733.   {return("O");}
  734.  if(key_var==25)
  735.   {return("P");}
  736.  if(key_var==16)
  737.   {return("Q");}
  738.  if(key_var==19)
  739.   {return("R");}
  740.  if(key_var==31)
  741.   {return("S");}
  742.  if(key_var==20)
  743.   {return("T");}
  744.  if(key_var==22)
  745.   {return("U");}
  746.  if(key_var==47)
  747.   {return("V");}
  748.  if(key_var==17)
  749.   {return("W");}
  750.  if(key_var==45)
  751.   {return("X");}
  752.  if(key_var==21)
  753.   {return("Y");}
  754.  if(key_var==44)
  755.   {return("Z");}
  756.  if(key_var==72)
  757.   {return("UP");}
  758.  if(key_var==80)
  759.   {return("DOWN");}
  760.  if(key_var==75)
  761.   {return("LEFT");}
  762.  if(key_var==77)
  763.   {return("RIGHT");}
  764.  if(key_var==11)
  765.   {return("0");}
  766.  if(key_var==2)
  767.   {return("1");}
  768.  if(key_var==3)
  769.   {return("2");}
  770.  if(key_var==4)
  771.   {return("3");}
  772.  if(key_var==5)
  773.   {return("4");}
  774.  if(key_var==6)
  775.   {return("5");}
  776.  if(key_var==7)
  777.   {return("6");}
  778.  if(key_var==8)
  779.   {return("7");}
  780.  if(key_var==9)
  781.   {return("8");}
  782.  if(key_var==10)
  783.   {return("9");}
  784.  if(key_var==1)
  785.   {return("ESCAPE");}
  786.  if(key_var==59)
  787.   {return("F1");}
  788.  if(key_var==60)
  789.   {return("F2");}
  790.  if(key_var==61)
  791.   {return("F3");}
  792.  if(key_var==62)
  793.   {return("F4");}
  794.  if(key_var==63)
  795.   {return("F5");}
  796.  if(key_var==64)
  797.   {return("F6");}
  798.  if(key_var==65)
  799.   {return("F7");}
  800.  if(key_var==66)
  801.   {return("F8");}
  802.  if(key_var==67)
  803.   {return("F9");}
  804.  if(key_var==68)
  805.   {return("F10");}
  806.  if(key_var==87)
  807.   {return("F11");}
  808.  if(key_var==88)
  809.   {return("F12");}
  810.  if(key_var==28)
  811.   {return("ENTER");}
  812.  if(key_var==15)
  813.   {return("TAB");}
  814.  if(key_var==29)
  815.   {return("CTRL");}
  816.  if(key_var==56)
  817.   {return("ALT");}
  818.  if(key_var==42)
  819.   {return("L SHIFT");}
  820.  if(key_var==54)
  821.   {return("R SHIFT");}
  822.  if(key_var==57)
  823.   {return("SPACE");}
  824.  if(key_var==14)
  825.   {return("BACKSPACE");}
  826.  if(key_var==73)
  827.   {return("PAGE UP");}
  828.  if(key_var==81)
  829.   {return("PAGE DOWN");}
  830.  if(key_var==71)
  831.   {return("HOME");}
  832.  if(key_var==79)
  833.   {return("END");}
  834.  if(key_var==82)
  835.   {return("INSERT");}
  836.  if(key_var==83)
  837.   {return("DELETE");}
  838.  if(key_var==69)
  839.   {return("PAUSE");}
  840.  if(key_var==51)
  841.   {return(",");}
  842.  if(key_var==52)
  843.   {return(".");}
  844.  
  845.  if(key_var==26)
  846.   {return("[");}
  847.  if(key_var==27)
  848.   {return("]");}
  849.  if(key_var==39)
  850.   {return(";");}
  851.  if(key_var==40)
  852.   {return("'");}
  853.  
  854.  if(key_var==12)
  855.   {return("-");}
  856.  if(key_var==13)
  857.   {return("=");}
  858.  if(key_var==53)
  859.   {return("/");}
  860.  if(key_var==41)
  861.   {return("`¼");}
  862.  if(key_var==43)
  863.   {return("\#");}
  864.  
  865.  if(key_var==256)
  866.   {return("JOY1");}
  867.  if(key_var==257)
  868.   {return("JOY2");}
  869.  if(key_var==258)
  870.   {return("JOY3");}
  871.  if(key_var==259)
  872.   {return("JOY4");}
  873.  if(key_var==260)
  874.   {return("JOY5");}
  875.  if(key_var==261)
  876.   {return("JOY6");}
  877.  if(key_var==262)
  878.   {return("JOY7");}
  879.  if(key_var==263)
  880.   {return("JOY8");}
  881.  if(key_var==264)
  882.   {return("JOY9");}
  883.  if(key_var==265)
  884.   {return("JOY10");}
  885.  
  886.  if(key_var==280)
  887.   {return("MOUSE L");}
  888.  if(key_var==281)
  889.   {return("MOUSE R");}
  890.  if(key_var==282)
  891.   {return("MOUSE MID");}
  892.  
  893. }
  894.  
  895.  
  896. //////END OF KEY REDEFINITION SCRIPT//////////////////////////////////////////////////////////////////////////////////
  897.  
  898.  
  899.  
  900.  
  901. //EVERYTHING BELOW DEALS WITH REDEFINING THE TEMPLATES AND CREATING A MENU TO ALLOW THE REDEFINITION OF KEYS WITH THE
  902. //TEMPLATE SCRIPTS...
  903.  
  904. bmap controlsmap = <controls.pcx>;
  905.  
  906. //"Controls" panel:
  907. panel controls_screen
  908. {
  909.  bmap = controlsmap;
  910.  flags = refresh,d3d,overlay;
  911.  layer=3;
  912. }
  913.  
  914.  
  915. ////////////////////////////////////////////////////////////////////////////
  916.  
  917. //OVERRIDES FOR TEMPLATES:
  918.  
  919. define my_key_up,key_cuu;
  920. var_info up_key_var=72;
  921.  
  922. define my_key_down,key_cud;
  923. var_info down_key_var=80;
  924.  
  925. define my_key_left,key_cul;
  926. var_info left_key_var=75;
  927.  
  928. define my_key_right=key_cur;
  929. var_info right_key_var=77;
  930.  
  931. define my_key_run=key_a; //cannot define key_shift initially, or you get a read-only error
  932. var_info run_key_var=54;      //but scancode 54 is right shift, so it will be redefined immediately!
  933.  
  934. define my_key_jump=key_home;
  935. var_info jump_key_var=71;
  936.  
  937. define my_key_crouch=key_end;
  938. var_info crouch_key_var=79;
  939.  
  940. define my_key_roll=key_alt;
  941. var_info roll_key_var=56;
  942.  
  943. define my_key_lookup=key_pgup;
  944. var_info lookup_key_var=73;
  945.  
  946. define my_key_lookdown=key_pgdn;
  947. var_info lookdown_key_var=81;
  948.  
  949. define my_key_strafel=key_cal;
  950. var_info strafel_key_var=51;
  951.  
  952. define my_key_strafer=key_car;
  953. var_info strafer_key_var=52;
  954.  
  955.  
  956. var updown_force;
  957. var leftright_force;
  958.  
  959.  
  960. function _player_intentions()
  961. {
  962.  
  963. //get custom key configuration:
  964. my_key_up=get_key(up_key_var);
  965. my_key_down=get_key(down_key_var);
  966. my_key_left=get_key(left_key_var);
  967. my_key_right=get_key(right_key_var);
  968. my_key_run=get_key(run_key_var);
  969. my_key_jump=get_key(jump_key_var);
  970. my_key_crouch=get_key(crouch_key_var);
  971. my_key_roll=get_key(roll_key_var);
  972. my_key_lookup=get_key(lookup_key_var);
  973. my_key_lookdown=get_key(lookdown_key_var);
  974. my_key_strafel=get_key(strafel_key_var);
  975. my_key_strafer=get_key(strafer_key_var);
  976.  
  977.  
  978. if(my_key_up==1)
  979. {updown_force=1;}
  980.    if(my_key_down==1)
  981. {updown_force=-1;}
  982.    if((my_key_up==0)&&(my_key_down==0))
  983. {updown_force=0;}
  984.    if(my_key_left==1)
  985.  {leftright_force=-1;}
  986.    if(my_key_right)
  987.  {leftright_force=1;}
  988. if((my_key_right==0)&&(my_key_left==0))
  989.  {leftright_force=0;}
  990.  
  991.  
  992. // Set the angular forces according to the player intentions
  993.     aforce.PAN = -astrength.PAN*(leftright_force+JOY_FORCE.X);
  994.     aforce.TILT = astrength.TILT*(my_key_lookup-my_key_lookdown);
  995.     if(MOUSE_MODE == 0)
  996.     {    // Mouse switched off?
  997.          aforce.PAN += -astrength.PAN*MOUSE_FORCE.X*mouseview*(1+my_key_run);
  998.          aforce.TILT += astrength.TILT*MOUSE_FORCE.Y*mouseview*(1+my_key_run);
  999.     }
  1000.     aforce.ROLL = 0;
  1001. // Set ROLL force if ALT was pressed
  1002.     if(my_key_roll != 0)
  1003.     {
  1004.         aforce.ROLL = aforce.PAN;
  1005.         aforce.PAN = 0;
  1006.     }
  1007. // Double the forces in case the player pressed SHIFT
  1008. /*--    if(my_key_run != 0)
  1009.     {
  1010.         aforce.PAN += aforce.PAN;
  1011.         aforce.TILT += aforce.TILT;
  1012.         aforce.ROLL += aforce.ROLL;
  1013.     }--*/
  1014. // Limit the forces in case the player
  1015. // pressed buttons, mouse and joystick simultaneously
  1016.     limit.PAN = 2*astrength.PAN;
  1017.     limit.TILT = 2*astrength.TILT;
  1018.     limit.ROLL = 2*astrength.ROLL;
  1019.  
  1020.     if(aforce.PAN > limit.PAN) {  aforce.PAN = limit.PAN; }
  1021.     if(aforce.PAN < -limit.PAN) {  aforce.PAN = -limit.PAN; }
  1022.     if(aforce.TILT > limit.TILT) {  aforce.TILT = limit.TILT; }
  1023.     if(aforce.TILT < -limit.TILT) {  aforce.TILT = -limit.TILT; }
  1024.     if(aforce.ROLL > limit.ROLL) {  aforce.ROLL = limit.ROLL; }
  1025.     if(aforce.ROLL < -limit.ROLL) {  aforce.ROLL = -limit.ROLL; }
  1026.  
  1027. // Set the cartesian forces according to the player intentions
  1028.     force.X = strength.X*(updown_force+JOY_FORCE.Y);
  1029.     force.Y = strength.Y*(my_key_strafel-my_key_strafer);
  1030.     force.Z = strength.Z*(my_key_jump-my_key_crouch);
  1031.     if(MOUSE_MODE == 0)
  1032.     {    // Mouse switched off?
  1033.         force.X += strength.X*MOUSE_RIGHT*mouseview;
  1034.         //force.X += strength.X*mouseview; //can't move forward using mouse_right!
  1035.     }
  1036.  
  1037. // Double the forces in case the player pressed SHIFT
  1038.     if(my_key_run != 0)
  1039.     {
  1040.         force.X += force.X;
  1041.         force.Y += force.Y;
  1042.         force.Z += force.Z;
  1043.     }
  1044.  
  1045. // Limit the forces in case the player tried to cheat by
  1046. // operating buttons, mouse and joystick simultaneously
  1047.     limit.X = 2*strength.X;
  1048.     limit.Y = 2*strength.Y;
  1049.     limit.Z = 2*strength.Z;
  1050.  
  1051.     if(force.X > limit.X) {  force.X = limit.X; }
  1052.     if(force.X < -limit.X) { force.X = -limit.X; }
  1053.     if(force.Y > limit.Y) {  force.Y = limit.Y; }
  1054.     if(force.Y < -limit.Y) { force.Y = -limit.Y; }
  1055.     if(force.Z > limit.Z) {  force.Z = limit.Z; }
  1056.     if(force.Z < -limit.Z) { force.Z = -limit.Z; }
  1057. }
  1058.  
  1059.  
  1060.  
  1061. ///////////////////////////////////////
  1062. //From weapons.wdl:
  1063.  
  1064. define my_key_shoot,key_ctrl;
  1065. var_info fire_key_var=29;
  1066.  
  1067.  
  1068. function weapon_fire()
  1069. {
  1070.  
  1071.     my_key_shoot=get_key(fire_key_var);
  1072.  
  1073.     weapon_firing = 1;
  1074.      while(my_key_shoot) { wait(1); }
  1075.     weapon_firing = 0;
  1076. }
  1077.  
  1078.  
  1079. ///////////////////////////////////////////////
  1080.  
  1081. //CHECK INPUT FOR ON_KEYS:
  1082.  
  1083. var_info mousetoggle_key_var=281; //mouse_right - From menu.wdl
  1084. var_info toggleview_key_var=65; //f7 - From camera.wdl
  1085. //From weapons.wdl:
  1086. var_info cyclegunup_key_var=18; // E
  1087. var_info cyclegundown_key_var=16; // Q
  1088. var_info togglecrosshair_key_var=37; // K
  1089. var_info handle_key_var=57; //Space - from input.wdl
  1090.  
  1091. function check_input(scancode)
  1092. {
  1093.  //Depending on scancode - ie key pressed - perform relevant function:
  1094.  
  1095.  if(scancode==mousetoggle_key_var) //check for Enter key...
  1096.   {mouse_toggle();}
  1097.  
  1098.  if(scancode==toggleview_key_var) //check for key assigned to send handle...
  1099.   {cycle_person_view();}
  1100.  
  1101.   if(scancode==cyclegunup_key_var)
  1102.    {gun_select_cycle_up();}
  1103.  
  1104.   if(scancode==cyclegundown_key_var)
  1105.    {gun_select_cycle_down();}
  1106.  
  1107.   if(scancode==togglecrosshair_key_var)
  1108.    {pan_cross_toggle();}
  1109.  
  1110.  if(scancode==handle_key_var) //check for key assigned to send handle...
  1111.   {send_handle();}
  1112. }
  1113.  
  1114.  
  1115. ///////////////////////////////////////////////////////////////////////////////////////
  1116. //
  1117. ///   EXAMPLE MENU:
  1118.  
  1119. string my_str[200];
  1120.  
  1121. //define strings with default keys and enough room for longer strings...
  1122. string up_str[15];
  1123. string down_str[15];
  1124. string left_str[15];
  1125. string right_str[15];
  1126. string handle_str[15];
  1127. string run_str[15];
  1128. string jump_str[15];
  1129. string crouch_str[15];
  1130. string strafel_str[15];
  1131. string strafer_str[15];
  1132. string fire_str[15];
  1133. string lookup_str[15];
  1134. string lookdown_str[15];
  1135. string roll_str[15];
  1136. string cyclegunup_str[15];
  1137. string cyclegundown_str[15];
  1138. string togglecrosshair_str[15];
  1139. string mousetoggle_str[15];
  1140. string toggleview_str[15];
  1141.  
  1142.  
  1143. font menufont, <fontsmal.bmp>, 8, 10;
  1144. font menufontyellow, <hifont.bmp>, 8, 10;  //same font but highlighted yellow...
  1145.  
  1146.  
  1147. //TEXTS:
  1148.  
  1149. //The following texts constitute the list of controls available:
  1150. //(note that their screen position is calculated in the main function)
  1151. text forward_text
  1152. {
  1153.  font=menufont;
  1154.  strings=1;
  1155.  string="FORWARD";
  1156.  layer=3;
  1157. }
  1158.  
  1159. text backwards_text
  1160. {
  1161.  font=menufont;
  1162.  strings=1;
  1163.  string="BACKWARDS";
  1164.  layer=3;
  1165. }
  1166.  
  1167. text left_text
  1168. {
  1169.  font=menufont;
  1170.  strings=1;
  1171.  string="LEFT";
  1172.  layer=3;
  1173. }
  1174.  
  1175. text right_text
  1176. {
  1177.  font=menufont;
  1178.  strings=1;
  1179.  string="RIGHT";
  1180.  layer=3;
  1181. }
  1182.  
  1183. text handle_text
  1184. {
  1185.  font=menufont;
  1186.  strings=1;
  1187.  string="USE";
  1188.  layer=3;
  1189. }
  1190.  
  1191. text run_text
  1192. {
  1193.  font=menufont;
  1194.  strings=1;
  1195.  string="RUN";
  1196.  layer=3;
  1197. }
  1198.  
  1199. text jump_text
  1200. {
  1201.  font=menufont;
  1202.  strings=1;
  1203.  string="JUMP";
  1204.  layer=3;
  1205. }
  1206.  
  1207. text crouch_text
  1208. {
  1209.  font=menufont;
  1210.  strings=1;
  1211.  string="CROUCH";
  1212.  layer=3;
  1213. }
  1214.  
  1215. text strafel_text
  1216. {
  1217.  font=menufont;
  1218.  strings=1;
  1219.  string="STRAFE LEFT";
  1220.  layer=3;
  1221. }
  1222.  
  1223. text strafer_text
  1224. {
  1225.  font=menufont;
  1226.  strings=1;
  1227.  string="STRAFE RIGHT";
  1228.  layer=3;
  1229. }
  1230.  
  1231. text fire_text
  1232. {
  1233.  font=menufont;
  1234.  strings=1;
  1235.  string="FIRE";
  1236.  layer=3;
  1237. }
  1238.  
  1239. text lookup_text
  1240. {
  1241.  font=menufont;
  1242.  strings=1;
  1243.  string="LOOK UP";
  1244.  layer=3;
  1245. }
  1246.  
  1247. text lookdown_text
  1248. {
  1249.  font=menufont;
  1250.  strings=1;
  1251.  string="LOOK DOWN";
  1252.  layer=3;
  1253. }
  1254.  
  1255. text roll_text
  1256. {
  1257.  font=menufont;
  1258.  strings=1;
  1259.  string="ROLL";
  1260.  layer=3;
  1261. }
  1262.  
  1263. text cyclegunup_text
  1264. {
  1265.  font=menufont;
  1266.  strings=1;
  1267.  string="CYCLE WEAPON UP";
  1268.  layer=3;
  1269. }
  1270.  
  1271. text cyclegundown_text
  1272. {
  1273.  font=menufont;
  1274.  strings=1;
  1275.  string="CYCLE WEAPON DOWN";
  1276.  layer=3;
  1277. }
  1278.  
  1279. text togglecrosshair_text
  1280. {
  1281.  font=menufont;
  1282.  strings=1;
  1283.  string="TOGGLE CROSSHAIR";
  1284.  layer=3;
  1285. }
  1286.  
  1287. text mousetoggle_text
  1288. {
  1289.  font=menufont;
  1290.  strings=1;
  1291.  string="TOGGLE MOUSE POINTER";
  1292.  layer=3;
  1293. }
  1294.  
  1295. text toggleview_text
  1296. {
  1297.  font=menufont;
  1298.  strings=1;
  1299.  string="TOGGLE VIEW";
  1300.  layer=3;
  1301. }
  1302.  
  1303.  
  1304. //Key strings:
  1305.  
  1306. text upkey_text
  1307. {
  1308.  font=menufont;
  1309.  strings=1;
  1310.  string=up_str;
  1311.  layer=3;
  1312. }
  1313.  
  1314. text downkey_text
  1315. {
  1316.  font=menufont;
  1317.  strings=1;
  1318.  string=down_str;
  1319.  layer=3;
  1320. }
  1321.  
  1322. text leftkey_text
  1323. {
  1324.  font=menufont;
  1325.  strings=1;
  1326.  string=left_str;
  1327.  layer=3;
  1328. }
  1329.  
  1330. text rightkey_text
  1331. {
  1332.  font=menufont;
  1333.  strings=1;
  1334.  string=right_str;
  1335.  layer=3;
  1336. }
  1337.  
  1338. text handlekey_text
  1339. {
  1340.  font=menufont;
  1341.  strings=1;
  1342.  string=handle_str;
  1343.  layer=3;
  1344. }
  1345.  
  1346. text runkey_text
  1347. {
  1348.  font=menufont;
  1349.  strings=1;
  1350.  string=run_str;
  1351.  layer=3;
  1352. }
  1353.  
  1354. text jumpkey_text
  1355. {
  1356.  font=menufont;
  1357.  strings=1;
  1358.  string=jump_str;
  1359.  layer=3;
  1360. }
  1361.  
  1362. text crouchkey_text
  1363. {
  1364.  font=menufont;
  1365.  strings=1;
  1366.  string=crouch_str;
  1367.  layer=3;
  1368. }
  1369.  
  1370. text strafelkey_text
  1371. {
  1372.  font=menufont;
  1373.  strings=1;
  1374.  string=strafel_str;
  1375.  layer=3;
  1376. }
  1377.  
  1378. text straferkey_text
  1379. {
  1380.  font=menufont;
  1381.  strings=1;
  1382.  string=strafer_str;
  1383.  layer=3;
  1384. }
  1385.  
  1386. text firekey_text
  1387. {
  1388.  font=menufont;
  1389.  strings=1;
  1390.  string=fire_str;
  1391.  layer=3;
  1392. }
  1393.  
  1394. text lookupkey_text
  1395. {
  1396.  font=menufont;
  1397.  strings=1;
  1398.  string=lookup_str;
  1399.  layer=3;
  1400. }
  1401.  
  1402. text lookdownkey_text
  1403. {
  1404.  font=menufont;
  1405.  strings=1;
  1406.  string=lookdown_str;
  1407.  layer=3;
  1408. }
  1409.  
  1410. text rollkey_text
  1411. {
  1412.  font=menufont;
  1413.  strings=1;
  1414.  string=roll_str;
  1415.  layer=3;
  1416. }
  1417.  
  1418. text cyclegunupkey_text
  1419. {
  1420.  font=menufont;
  1421.  strings=1;
  1422.  string=cyclegunup_str;
  1423.  layer=3;
  1424. }
  1425.  
  1426. text cyclegundownkey_text
  1427. {
  1428.  font=menufont;
  1429.  strings=1;
  1430.  string=cyclegundown_str;
  1431.  layer=3;
  1432. }
  1433.  
  1434. text togglecrosshairkey_text
  1435. {
  1436.  font=menufont;
  1437.  strings=1;
  1438.  string=togglecrosshair_str;
  1439.  layer=3;
  1440. }
  1441.  
  1442. text mousetogglekey_text
  1443. {
  1444.  font=menufont;
  1445.  strings=1;
  1446.  string=mousetoggle_str;
  1447.  layer=3;
  1448. }
  1449.  
  1450. text toggleviewkey_text
  1451. {
  1452.  font=menufont;
  1453.  strings=1;
  1454.  string=toggleview_str;
  1455.  layer=3;
  1456. }
  1457.  
  1458. text resetdefaults_text
  1459. {
  1460.  font=menufont;
  1461.  strings=1;
  1462.  string="RESTORE DEFAULTS";
  1463.  layer=3;
  1464.  flags=center_x;
  1465. }
  1466.  
  1467.  
  1468.  
  1469.  
  1470. //The menus...
  1471.  
  1472. var controltoggle=0;
  1473.  
  1474. function controls_menu_toggle()
  1475. {
  1476.  if (controltoggle==0)
  1477.   {
  1478.    controltoggle=1;
  1479.    controls_menu_on();
  1480.   }
  1481.  else
  1482.   {
  1483.    controltoggle=0;
  1484.    save_info("contr",015); //save new definitions when controls menu is closed
  1485.    controls_menu_off();
  1486.   }
  1487. }
  1488.  
  1489.  
  1490.  
  1491. var cursorstop=0;
  1492.  
  1493. var cursorpos=0;
  1494.  
  1495.  
  1496. function controls_menu_on()
  1497. {
  1498.  //Get the current mapping and copy to relevant strings:
  1499.  str_cpy(up_str,get_key_string(up_key_var));
  1500.  str_cpy(down_str,get_key_string(down_key_var));
  1501.  str_cpy(left_str,get_key_string(left_key_var));
  1502.  str_cpy(right_str,get_key_string(right_key_var));
  1503.  str_cpy(handle_str,get_key_string(handle_key_var));
  1504.  str_cpy(run_str,get_key_string(run_key_var));
  1505.  str_cpy(jump_str,get_key_string(jump_key_var));
  1506.  str_cpy(crouch_str,get_key_string(crouch_key_var));
  1507.  str_cpy(strafel_str,get_key_string(strafel_key_var));
  1508.  str_cpy(strafer_str,get_key_string(strafer_key_var));
  1509.  str_cpy(fire_str,get_key_string(fire_key_var));
  1510.  str_cpy(lookup_str,get_key_string(lookup_key_var));
  1511.  str_cpy(lookdown_str,get_key_string(lookdown_key_var));
  1512.  str_cpy(roll_str,get_key_string(roll_key_var));
  1513.  str_cpy(cyclegunup_str,get_key_string(cyclegunup_key_var));
  1514.  str_cpy(cyclegundown_str,get_key_string(cyclegundown_key_var));
  1515.  str_cpy(togglecrosshair_str,get_key_string(togglecrosshair_key_var));
  1516.  str_cpy(mousetoggle_str,get_key_string(mousetoggle_key_var));
  1517.  str_cpy(toggleview_str,get_key_string(toggleview_key_var));
  1518.  
  1519.  
  1520.  
  1521.  
  1522.  cursorpos=0; //reset cursor position to top;
  1523.  
  1524.  freeze_mode=1; //pause game
  1525.  
  1526.  //get text positions relative to screen (so the menu looks okay in any resolution):
  1527.  forward_text.pos_x=screen_size.x/2-150;
  1528.  forward_text.pos_y=screen_size.y/2-175;
  1529.  backwards_text.pos_x=screen_size.x/2-150;
  1530.  backwards_text.pos_y=screen_size.y/2-155;
  1531.  left_text.pos_x=screen_size.x/2-150;
  1532.  left_text.pos_y=screen_size.y/2-135;
  1533.  right_text.pos_x=screen_size.x/2-150;
  1534.  right_text.pos_y=screen_size.y/2-115;
  1535.  handle_text.pos_x=screen_size.x/2-150;
  1536.  handle_text.pos_y=screen_size.y/2-95;
  1537.  run_text.pos_x=screen_size.x/2-150;
  1538.  run_text.pos_y=screen_size.y/2-75;
  1539.  jump_text.pos_x=screen_size.x/2-150;
  1540.  jump_text.pos_y=screen_size.y/2-55;
  1541.  crouch_text.pos_x=screen_size.x/2-150;
  1542.  crouch_text.pos_y=screen_size.y/2-35;
  1543.  strafel_text.pos_x=screen_size.x/2-150;
  1544.  strafel_text.pos_y=screen_size.y/2-15;
  1545.  strafer_text.pos_x=screen_size.x/2-150;
  1546.  strafer_text.pos_y=screen_size.y/2+5;
  1547.  fire_text.pos_x=screen_size.x/2-150;
  1548.  fire_text.pos_y=screen_size.y/2+25;
  1549.  lookup_text.pos_x=screen_size.x/2-150;
  1550.  lookup_text.pos_y=screen_size.y/2+45;
  1551.  lookdown_text.pos_x=screen_size.x/2-150;
  1552.  lookdown_text.pos_y=screen_size.y/2+65;
  1553.  roll_text.pos_x=screen_size.x/2-150;
  1554.  roll_text.pos_y=screen_size.y/2+85;
  1555.  cyclegunup_text.pos_x=screen_size.x/2-150;
  1556.  cyclegunup_text.pos_y=screen_size.y/2+105;
  1557.  cyclegundown_text.pos_x=screen_size.x/2-150;
  1558.  cyclegundown_text.pos_y=screen_size.y/2+125;
  1559.  togglecrosshair_text.pos_x=screen_size.x/2-150;
  1560.  togglecrosshair_text.pos_y=screen_size.y/2+145;
  1561.  mousetoggle_text.pos_x=screen_size.x/2-150;
  1562.  mousetoggle_text.pos_y=screen_size.y/2+165;
  1563.  toggleview_text.pos_x=screen_size.x/2-150;
  1564.  toggleview_text.pos_y=screen_size.y/2+185;
  1565.  
  1566.  upkey_text.pos_x=screen_size.x/2+75;
  1567.  upkey_text.pos_y=screen_size.y/2-175;
  1568.  downkey_text.pos_x=screen_size.x/2+75;
  1569.  downkey_text.pos_y=screen_size.y/2-155;
  1570.  leftkey_text.pos_x=screen_size.x/2+75;
  1571.  leftkey_text.pos_y=screen_size.y/2-135;
  1572.  rightkey_text.pos_x=screen_size.x/2+75;
  1573.  rightkey_text.pos_y=screen_size.y/2-115;
  1574.  handlekey_text.pos_x=screen_size.x/2+75;
  1575.  handlekey_text.pos_y=screen_size.y/2-95;
  1576.  runkey_text.pos_x=screen_size.x/2+75;
  1577.  runkey_text.pos_y=screen_size.y/2-75;
  1578.  jumpkey_text.pos_x=screen_size.x/2+75;
  1579.  jumpkey_text.pos_y=screen_size.y/2-55;
  1580.  crouchkey_text.pos_x=screen_size.x/2+75;
  1581.  crouchkey_text.pos_y=screen_size.y/2-35;
  1582.  strafelkey_text.pos_x=screen_size.x/2+75;
  1583.  strafelkey_text.pos_y=screen_size.y/2-15;
  1584.  straferkey_text.pos_x=screen_size.x/2+75;
  1585.  straferkey_text.pos_y=screen_size.y/2+5;
  1586.  firekey_text.pos_x=screen_size.x/2+75;
  1587.  firekey_text.pos_y=screen_size.y/2+25;
  1588.  lookupkey_text.pos_x=screen_size.x/2+75;
  1589.  lookupkey_text.pos_y=screen_size.y/2+45;
  1590.  lookdownkey_text.pos_x=screen_size.x/2+75;
  1591.  lookdownkey_text.pos_y=screen_size.y/2+65;
  1592.  rollkey_text.pos_x=screen_size.x/2+75;
  1593.  rollkey_text.pos_y=screen_size.y/2+85;
  1594.  cyclegunupkey_text.pos_x=screen_size.x/2+75;
  1595.  cyclegunupkey_text.pos_y=screen_size.y/2+105;
  1596.  cyclegundownkey_text.pos_x=screen_size.x/2+75;
  1597.  cyclegundownkey_text.pos_y=screen_size.y/2+125;
  1598.  togglecrosshairkey_text.pos_x=screen_size.x/2+75;
  1599.  togglecrosshairkey_text.pos_y=screen_size.y/2+145;
  1600.  mousetogglekey_text.pos_x=screen_size.x/2+75;
  1601.  mousetogglekey_text.pos_y=screen_size.y/2+165;
  1602.  toggleviewkey_text.pos_x=screen_size.x/2+75;
  1603.  toggleviewkey_text.pos_y=screen_size.y/2+185;
  1604.  
  1605.  resetdefaults_text.pos_x=screen_size.x/2;
  1606.  resetdefaults_text.pos_y=screen_size.y/2+220;
  1607.  
  1608. //Title panel:
  1609. controls_screen.pos_x=screen_size.x/2-75;
  1610. controls_screen.pos_y=screen_size.y/2-230;
  1611. controls_screen.visible=on;
  1612.  
  1613.  
  1614.  forward_text.visible=on;
  1615.  backwards_text.visible=on;
  1616.  left_text.visible=on;
  1617.  right_text.visible=on;
  1618.  handle_text.visible=on;
  1619.  run_text.visible=on;
  1620.  jump_text.visible=on;
  1621.  crouch_text.visible=on;
  1622.  strafel_text.visible=on;
  1623.  strafer_text.visible=on;
  1624.  fire_text.visible=on;
  1625.  lookup_text.visible=on;
  1626.  lookdown_text.visible=on;
  1627.  roll_text.visible=on;
  1628.  cyclegunup_text.visible=on;
  1629.  cyclegundown_text.visible=on;
  1630.  togglecrosshair_text.visible=on;
  1631.  mousetoggle_text.visible=on;
  1632.  toggleview_text.visible=on;
  1633.  
  1634.  upkey_text.visible=on;
  1635.  downkey_text.visible=on;
  1636.  leftkey_text.visible=on;
  1637.  rightkey_text.visible=on;
  1638.  handlekey_text.visible=on;
  1639.  runkey_text.visible=on;
  1640.  jumpkey_text.visible=on;
  1641.  crouchkey_text.visible=on;
  1642.  strafelkey_text.visible=on;
  1643.  straferkey_text.visible=on;
  1644.  firekey_text.visible=on;
  1645.  lookupkey_text.visible=on;
  1646.  lookdownkey_text.visible=on;
  1647.  rollkey_text.visible=on;
  1648.  cyclegunupkey_text.visible=on;
  1649.  cyclegundownkey_text.visible=on;
  1650.  togglecrosshairkey_text.visible=on;
  1651.  mousetogglekey_text.visible=on;
  1652.  toggleviewkey_text.visible=on;
  1653.  
  1654.  resetdefaults_text.visible=on;
  1655.  
  1656.  
  1657.  while(controltoggle==1) //while menu is visible:
  1658.   {
  1659.    
  1660.   if(key_cud==0)&&(key_cuu==0){cursorstop=0;} 
  1661.  
  1662.    if(key_cud==1)&&(cursorstop==0)
  1663.     {
  1664.      cursorpos+=1;
  1665.      cursorstop=1;
  1666.     }
  1667.    if(key_cuu==1)&&(cursorstop==0)
  1668.     {
  1669.      cursorpos-=1;
  1670.      cursorstop=1;
  1671.     }
  1672.  
  1673.    if (cursorpos>19) //cycle to top
  1674.     {cursorpos=0;}
  1675.    if (cursorpos<0) //cycle to bottom
  1676.     {cursorpos=19;}
  1677.  
  1678.  
  1679.    if(cursorpos==0)
  1680.    {
  1681.     forward_text.font=menufontyellow;
  1682.     upkey_text.font=menufontyellow;
  1683.    }
  1684.     else
  1685.    {
  1686.     forward_text.font=menufont;
  1687.     upkey_text.font=menufont;
  1688.    }
  1689.  
  1690.    if(cursorpos==1)
  1691.    {
  1692.     backwards_text.font=menufontyellow; 
  1693.     downkey_text.font=menufontyellow;
  1694.    }
  1695.     else
  1696.    {
  1697.     backwards_text.font=menufont; 
  1698.     downkey_text.font=menufont;
  1699.    }
  1700.  
  1701.    if(cursorpos==2)
  1702.    {
  1703.     left_text.font=menufontyellow; 
  1704.     leftkey_text.font=menufontyellow;
  1705.    }
  1706.     else
  1707.    {
  1708.     left_text.font=menufont; 
  1709.     leftkey_text.font=menufont;
  1710.    }
  1711.  
  1712.    if(cursorpos==3)
  1713.    {
  1714.     right_text.font=menufontyellow; 
  1715.     rightkey_text.font=menufontyellow;
  1716.    }
  1717.     else
  1718.    {
  1719.     right_text.font=menufont; 
  1720.     rightkey_text.font=menufont;
  1721.    }
  1722.  
  1723.    if(cursorpos==4)
  1724.    {
  1725.     handle_text.font=menufontyellow; 
  1726.     handlekey_text.font=menufontyellow;
  1727.    }
  1728.     else
  1729.    {
  1730.     handle_text.font=menufont; 
  1731.     handlekey_text.font=menufont;
  1732.    }
  1733.  
  1734.    if(cursorpos==5)
  1735.    {
  1736.     run_text.font=menufontyellow; 
  1737.     runkey_text.font=menufontyellow;
  1738.    }
  1739.     else
  1740.    {
  1741.     run_text.font=menufont; 
  1742.     runkey_text.font=menufont;
  1743.    }
  1744.  
  1745.    if(cursorpos==6)
  1746.    {
  1747.     jump_text.font=menufontyellow; 
  1748.     jumpkey_text.font=menufontyellow;
  1749.    }
  1750.     else
  1751.    {
  1752.     jump_text.font=menufont; 
  1753.     jumpkey_text.font=menufont;
  1754.    }
  1755.  
  1756.    if(cursorpos==7)
  1757.    {
  1758.     crouch_text.font=menufontyellow; 
  1759.     crouchkey_text.font=menufontyellow;
  1760.    }
  1761.     else
  1762.    {
  1763.     crouch_text.font=menufont; 
  1764.     crouchkey_text.font=menufont;
  1765.    }
  1766.  
  1767.    if(cursorpos==8)
  1768.    {
  1769.     strafel_text.font=menufontyellow; 
  1770.     strafelkey_text.font=menufontyellow;
  1771.    }
  1772.     else
  1773.    {
  1774.     strafel_text.font=menufont; 
  1775.     strafelkey_text.font=menufont;
  1776.    }
  1777.  
  1778.    if(cursorpos==9)
  1779.    {
  1780.     strafer_text.font=menufontyellow; 
  1781.     straferkey_text.font=menufontyellow;
  1782.    }
  1783.     else
  1784.    {
  1785.     strafer_text.font=menufont; 
  1786.     straferkey_text.font=menufont;
  1787.    }
  1788.  
  1789.    if(cursorpos==10)
  1790.    {
  1791.     fire_text.font=menufontyellow; 
  1792.     firekey_text.font=menufontyellow;
  1793.    }
  1794.     else
  1795.    {
  1796.     fire_text.font=menufont; 
  1797.     firekey_text.font=menufont;
  1798.    }
  1799.  
  1800.    if(cursorpos==11)
  1801.    {
  1802.     lookup_text.font=menufontyellow; 
  1803.     lookupkey_text.font=menufontyellow;
  1804.    }
  1805.     else
  1806.    {
  1807.     lookup_text.font=menufont; 
  1808.     lookupkey_text.font=menufont;
  1809.    }
  1810.  
  1811.    if(cursorpos==12)
  1812.    {
  1813.     lookdown_text.font=menufontyellow; 
  1814.     lookdownkey_text.font=menufontyellow;
  1815.    }
  1816.     else
  1817.    {
  1818.     lookdown_text.font=menufont; 
  1819.     lookdownkey_text.font=menufont;
  1820.    }
  1821.  
  1822.    if(cursorpos==13)
  1823.    {
  1824.     roll_text.font=menufontyellow; 
  1825.     rollkey_text.font=menufontyellow;
  1826.    }
  1827.     else
  1828.    {
  1829.     roll_text.font=menufont; 
  1830.     rollkey_text.font=menufont;
  1831.    }
  1832.  
  1833.    if(cursorpos==14)
  1834.    {
  1835.     cyclegunup_text.font=menufontyellow; 
  1836.     cyclegunupkey_text.font=menufontyellow;
  1837.    }
  1838.     else
  1839.    {
  1840.     cyclegunup_text.font=menufont; 
  1841.     cyclegunupkey_text.font=menufont;
  1842.    }
  1843.  
  1844.    if(cursorpos==15)
  1845.    {
  1846.     cyclegundown_text.font=menufontyellow; 
  1847.     cyclegundownkey_text.font=menufontyellow;
  1848.    }
  1849.     else
  1850.    {
  1851.     cyclegundown_text.font=menufont; 
  1852.     cyclegundownkey_text.font=menufont;
  1853.    }
  1854.  
  1855.    if(cursorpos==16)
  1856.    {
  1857.     togglecrosshair_text.font=menufontyellow; 
  1858.     togglecrosshairkey_text.font=menufontyellow;
  1859.    }
  1860.     else
  1861.    {
  1862.     togglecrosshair_text.font=menufont; 
  1863.     togglecrosshairkey_text.font=menufont;
  1864.    }
  1865.  
  1866.    if(cursorpos==17)
  1867.    {
  1868.     mousetoggle_text.font=menufontyellow; 
  1869.     mousetogglekey_text.font=menufontyellow;
  1870.    }
  1871.     else
  1872.    {
  1873.     mousetoggle_text.font=menufont; 
  1874.     mousetogglekey_text.font=menufont;
  1875.    }
  1876.  
  1877.    if(cursorpos==18)
  1878.    {
  1879.     toggleview_text.font=menufontyellow; 
  1880.     toggleviewkey_text.font=menufontyellow;
  1881.    }
  1882.     else
  1883.    {
  1884.     toggleview_text.font=menufont; 
  1885.     toggleviewkey_text.font=menufont;
  1886.    }
  1887.  
  1888.    if(cursorpos==19)
  1889.    {
  1890.     resetdefaults_text.font=menufontyellow; 
  1891.    }
  1892.     else
  1893.    {
  1894.     resetdefaults_text.font=menufont; 
  1895.    }
  1896.  
  1897.    if(key_enter==1)
  1898.     {
  1899.      if(cursorpos==0)
  1900.       {
  1901.        str_cpy(up_str,"ENTER NEW KEY");
  1902.        waitt(10);
  1903.        while(key_any==0){wait(1);}
  1904.        up_key_var=define_key();
  1905.        str_cpy(up_str,new_key_str);
  1906.        while(key_any==1){wait(1);}
  1907.       }
  1908.  
  1909.      if(cursorpos==1)
  1910.       {
  1911.        str_cpy(down_str,"ENTER NEW KEY");
  1912.        waitt(10);
  1913.        while(key_any==0){wait(1);}
  1914.        down_key_var=define_key();
  1915.        str_cpy(down_str,new_key_str);
  1916.        while(key_any==1){wait(1);}
  1917.       }
  1918.  
  1919.      if(cursorpos==2)
  1920.       {
  1921.        str_cpy(left_str,"ENTER NEW KEY");
  1922.        waitt(10);
  1923.        while(key_any==0){wait(1);}
  1924.        left_key_var=define_key();
  1925.        str_cpy(left_str,new_key_str);
  1926.        while(key_any==1){wait(1);}
  1927.       }
  1928.  
  1929.      if(cursorpos==3)
  1930.       {
  1931.        str_cpy(right_str,"ENTER NEW KEY");
  1932.        waitt(10);
  1933.        while(key_any==0){wait(1);}
  1934.        right_key_var=define_key();
  1935.        str_cpy(right_str,new_key_str);
  1936.        while(key_any==1){wait(1);}
  1937.       }
  1938.  
  1939.      if(cursorpos==4)
  1940.       {
  1941.        str_cpy(handle_str,"ENTER NEW KEY");
  1942.        waitt(10);
  1943.        while(key_any==0){wait(1);}
  1944.        handle_key_var=define_key();
  1945.        str_cpy(handle_str,new_key_str);
  1946.        while(key_any==1){wait(1);}
  1947.       }
  1948.  
  1949.      if(cursorpos==5)
  1950.       {
  1951.        str_cpy(run_str,"ENTER NEW KEY");
  1952.        waitt(10);
  1953.        while(key_any==0){wait(1);}
  1954.        run_key_var=define_key();
  1955.        str_cpy(run_str,new_key_str);
  1956.        while(key_any==1){wait(1);}
  1957.       }
  1958.  
  1959.      if(cursorpos==6)
  1960.       {
  1961.        str_cpy(jump_str,"ENTER NEW KEY");
  1962.        waitt(10);
  1963.        while(key_any==0){wait(1);}
  1964.        jump_key_var=define_key();
  1965.        str_cpy(jump_str,new_key_str);
  1966.        while(key_any==1){wait(1);}
  1967.       }
  1968.  
  1969.      if(cursorpos==7)
  1970.       {
  1971.        str_cpy(crouch_str,"ENTER NEW KEY");
  1972.        waitt(10);
  1973.        while(key_any==0){wait(1);}
  1974.        crouch_key_var=define_key();
  1975.        str_cpy(crouch_str,new_key_str);
  1976.        while(key_any==1){wait(1);}
  1977.       }
  1978.  
  1979.      if(cursorpos==8)
  1980.       {
  1981.        str_cpy(strafel_str,"ENTER NEW KEY");
  1982.        waitt(10);
  1983.        while(key_any==0){wait(1);}
  1984.        strafel_key_var=define_key();
  1985.        str_cpy(strafel_str,new_key_str);
  1986.        while(key_any==1){wait(1);}
  1987.       }
  1988.  
  1989.      if(cursorpos==9)
  1990.       {
  1991.        str_cpy(strafer_str,"ENTER NEW KEY");
  1992.        waitt(10);
  1993.        while(key_any==0){wait(1);}
  1994.        strafer_key_var=define_key();
  1995.        str_cpy(strafer_str,new_key_str);
  1996.        while(key_any==1){wait(1);}
  1997.       }
  1998.  
  1999.      if(cursorpos==10)
  2000.       {
  2001.        str_cpy(fire_str,"ENTER NEW KEY");
  2002.        waitt(10);
  2003.        while(key_any==0){wait(1);}
  2004.        fire_key_var=define_key();
  2005.        str_cpy(fire_str,new_key_str);
  2006.        while(key_any==1){wait(1);}
  2007.       }
  2008.  
  2009.      if(cursorpos==11)
  2010.       {
  2011.        str_cpy(lookup_str,"ENTER NEW KEY");
  2012.        waitt(10);
  2013.        while(key_any==0){wait(1);}
  2014.        lookup_key_var=define_key();
  2015.        str_cpy(lookup_str,new_key_str);
  2016.        while(key_any==1){wait(1);}
  2017.       }
  2018.  
  2019.      if(cursorpos==12)
  2020.       {
  2021.        str_cpy(lookdown_str,"ENTER NEW KEY");
  2022.        waitt(10);
  2023.        while(key_any==0){wait(1);}
  2024.        lookdown_key_var=define_key();
  2025.        str_cpy(lookdown_str,new_key_str);
  2026.        while(key_any==1){wait(1);}
  2027.       }
  2028.  
  2029.      if(cursorpos==13)
  2030.       {
  2031.        str_cpy(roll_str,"ENTER NEW KEY");
  2032.        waitt(10);
  2033.        while(key_any==0){wait(1);}
  2034.        roll_key_var=define_key();
  2035.        str_cpy(roll_str,new_key_str);
  2036.        while(key_any==1){wait(1);}
  2037.       }
  2038.  
  2039.      if(cursorpos==14)
  2040.       {
  2041.        str_cpy(cyclegunup_str,"ENTER NEW KEY");
  2042.        waitt(10);
  2043.        while(key_any==0){wait(1);}
  2044.        cyclegunup_key_var=define_key();
  2045.        str_cpy(cyclegunup_str,new_key_str);
  2046.        while(key_any==1){wait(1);}
  2047.       }
  2048.  
  2049.      if(cursorpos==15)
  2050.       {
  2051.        str_cpy(cyclegundown_str,"ENTER NEW KEY");
  2052.        waitt(10);
  2053.        while(key_any==0){wait(1);}
  2054.        cyclegundown_key_var=define_key();
  2055.        str_cpy(cyclegundown_str,new_key_str);
  2056.        while(key_any==1){wait(1);}
  2057.       }
  2058.  
  2059.      if(cursorpos==16)
  2060.       {
  2061.        str_cpy(togglecrosshair_str,"ENTER NEW KEY");
  2062.        waitt(10);
  2063.        while(key_any==0){wait(1);}
  2064.        togglecrosshair_key_var=define_key();
  2065.        str_cpy(togglecrosshair_str,new_key_str);
  2066.        while(key_any==1){wait(1);}
  2067.       }
  2068.  
  2069.      if(cursorpos==17)
  2070.       {
  2071.        str_cpy(mousetoggle_str,"ENTER NEW KEY");
  2072.        waitt(10);
  2073.        while(key_any==0){wait(1);}
  2074.        mousetoggle_key_var=define_key();
  2075.        str_cpy(mousetoggle_str,new_key_str);
  2076.        while(key_any==1){wait(1);}
  2077.       }
  2078.  
  2079.      if(cursorpos==18)
  2080.       {
  2081.        str_cpy(toggleview_str,"ENTER NEW KEY");
  2082.        waitt(10);
  2083.        while(key_any==0){wait(1);}
  2084.        toggleview_key_var=define_key();
  2085.        str_cpy(toggleview_str,new_key_str);
  2086.        while(key_any==1){wait(1);}
  2087.       }
  2088.  
  2089.      if(cursorpos==19)
  2090.       {reset_default_keys();}
  2091.  
  2092.     }
  2093.    wait(1);
  2094.   }
  2095. }
  2096.  
  2097.  
  2098. function controls_menu_off()
  2099. {
  2100.  controls_screen.visible=off;
  2101.  
  2102.  forward_text.visible=off;
  2103.  backwards_text.visible=off;
  2104.  left_text.visible=off;
  2105.  right_text.visible=off;
  2106.  handle_text.visible=off;
  2107.  run_text.visible=off;
  2108.  jump_text.visible=off;
  2109.  crouch_text.visible=off;
  2110.  strafel_text.visible=off;
  2111.  strafer_text.visible=off;
  2112.  fire_text.visible=off;
  2113.  lookup_text.visible=off;
  2114.  lookdown_text.visible=off;
  2115.  roll_text.visible=off;
  2116.  cyclegunup_text.visible=off;
  2117.  cyclegundown_text.visible=off;
  2118.  togglecrosshair_text.visible=off;
  2119.  mousetoggle_text.visible=off;
  2120.  toggleview_text.visible=off;
  2121.  
  2122.  upkey_text.visible=off;
  2123.  downkey_text.visible=off;
  2124.  leftkey_text.visible=off;
  2125.  rightkey_text.visible=off;
  2126.  handlekey_text.visible=off;
  2127.  runkey_text.visible=off;
  2128.  jumpkey_text.visible=off;
  2129.  crouchkey_text.visible=off;
  2130.  strafelkey_text.visible=off;
  2131.  straferkey_text.visible=off;
  2132.  firekey_text.visible=off;
  2133.  lookupkey_text.visible=off;
  2134.  lookdownkey_text.visible=off;
  2135.  rollkey_text.visible=off;
  2136.  cyclegunupkey_text.visible=off;
  2137.  cyclegundownkey_text.visible=off;
  2138.  togglecrosshairkey_text.visible=off;
  2139.  mousetogglekey_text.visible=off;
  2140.  toggleviewkey_text.visible=off;
  2141.  
  2142.  resetdefaults_text.visible=off;
  2143.  
  2144.  freeze_mode=0; //resume game
  2145. }
  2146.  
  2147.  
  2148. //Reset default keys:
  2149. function reset_default_keys()
  2150. {
  2151.  //Reset keys by scancode:
  2152.  up_key_var=72;
  2153.  down_key_var=80;
  2154.  left_key_var=75;
  2155.  right_key_var=77;
  2156.  handle_key_var=57;
  2157.  run_key_var=54;
  2158.  jump_key_var=71;
  2159.  crouch_key_var=79;
  2160.  strafel_key_var=51;
  2161.  strafer_key_var=52;
  2162.  fire_key_var=29;
  2163.  lookup_key_var=73;
  2164.  lookdown_key_var=81;
  2165.  roll_key_var=56;
  2166.  cyclegunup_key_var=18;
  2167.  cyclegundown_key_var=16;
  2168.  togglecrosshair_key_var=37;
  2169.  mousetoggle_key_var=281;
  2170.  toggleview_key_var=65;
  2171.  
  2172.  //Now refresh the display accordingly:
  2173.  str_cpy(up_str,get_key_string(up_key_var));
  2174.  str_cpy(down_str,get_key_string(down_key_var));
  2175.  str_cpy(left_str,get_key_string(left_key_var));
  2176.  str_cpy(right_str,get_key_string(right_key_var));
  2177.  str_cpy(handle_str,get_key_string(handle_key_var));
  2178.  str_cpy(run_str,get_key_string(run_key_var));
  2179.  str_cpy(jump_str,get_key_string(jump_key_var));
  2180.  str_cpy(crouch_str,get_key_string(crouch_key_var));
  2181.  str_cpy(strafel_str,get_key_string(strafel_key_var));
  2182.  str_cpy(strafer_str,get_key_string(strafer_key_var));
  2183.  str_cpy(fire_str,get_key_string(fire_key_var));
  2184.  str_cpy(lookup_str,get_key_string(lookup_key_var));
  2185.  str_cpy(lookdown_str,get_key_string(lookdown_key_var));
  2186.  str_cpy(roll_str,get_key_string(roll_key_var));
  2187.  str_cpy(cyclegunup_str,get_key_string(cyclegunup_key_var));
  2188.  str_cpy(cyclegundown_str,get_key_string(cyclegundown_key_var));
  2189.  str_cpy(togglecrosshair_str,get_key_string(togglecrosshair_key_var));
  2190.  str_cpy(mousetoggle_str,get_key_string(mousetoggle_key_var));
  2191.  str_cpy(toggleview_str,get_key_string(toggleview_key_var));
  2192. }
  2193.  
  2194.  
  2195. function init_controls() //call from main() to initiate the saved control configuration...
  2196. {
  2197.  load_info("contr",015);
  2198. }
  2199.  
  2200.  
  2201.  
  2202.  
  2203.  
  2204. ////////////////////////////////////////////
  2205. //
  2206. // ON KEYS:
  2207.  
  2208. //get rid of defualt on_keys:
  2209. on_space=null;
  2210. on_f7=null;
  2211. on_mouse_right=null;
  2212. on_e=null;
  2213. on_q=null;
  2214. on_k=null;
  2215.  
  2216. //now use anykey to check which button pressed:
  2217. on_anykey=check_input;
  2218.  
  2219. on_f12=controls_menu_toggle; //call redefine controls menu...